package nl.grol.yakshop.domain.model;

/**
 * Interface used as placeholder for shaveable creatures
 * 
 * @author mgrol
 *
 */
public interface ShaveableI extends LivingI {
	
	/**
	 * Determines if the object-of-interest is old enough to be shaven.
	 * Typically there is a minimum age for shaving
	 * 
	 * @param daysSinceStartOfShop: days since start shop (=start reference point in time)
	 * @return yes or no
	 */
	boolean isOldEnoughToBeShavedOnDay(int daysSinceStartOfShop);

	/**
	 * Determines if the object-of-interest must be shaven on pa particular day.
	 * 
	 * @param daysSinceStartOfShop: days since start shop (=start reference point in time)
	 * @return yes or no
	 */
	boolean mustBeShavedOnDay(int daysSinceStartOfShop);

	/**
	 * Determines the age at which the object-of-interest was last shaved.

	 * @param daysSinceStartOfShop: days since start shop (=start reference point in time)
	 * @return age
	 */
	double getLastShavedAgeInYearsOnDay(int daysSinceStartOfShop);
}
